package shuaige.jdk.datetime;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;

public class LocalDateDemo {
    public static void main(String[] args) {
        转换系列_LocalDate转换为LocalDateTime();
    }

    public static void 添加系列() {
        LocalDate now = LocalDate.now();
        // 自定义添加-日
        now.plus(1, ChronoUnit.DAYS);
        // 添加日
        now.plusDays(1);
        // 添加周
        now.plusWeeks(1);
        // 添加月
        now.plusMonths(1);
        // 添加年
        now.plusYears(1);
    }

    public static void 转换系列_LocalDate转换为LocalDateTime() {
        LocalDate localDate = LocalDate.now();
        // 将此日期与午夜时间组合以在此日期的开始处创建LocalDateTime 。
        // 这将返回从该日期开始的午夜 00:00 形成的LocalDateTime 。
        LocalDateTime localDateTime1 = localDate.atStartOfDay();

        // 将此日期与时间组合以创建LocalDateTime 。
        // 这将返回从该日期在指定时间形成的LocalDateTime 。 日期和时间的所有可能组合都是有效的。
        LocalDateTime localDateTime3 = localDate.atTime(LocalTime.now());

        // 将此日期与时间组合以创建LocalDateTime 。
        // 这将在指定的小时、分钟和秒返回从此日期形成的LocalDateTime 。
        // 纳秒字段将设置为零。 各个时间字段必须在其有效范围内。 日期和时间的所有可能组合都是有效的。
        LocalDateTime localDateTime2 = localDate.atTime(8, 20, 33);
    }

    public static void 转换系列_LocalDate转换为Date() {
        // 先调用 atStartOfDay() 方法转 LocalDateTime 再转 Date
        LocalDate localDate = LocalDate.now();
        ZoneId zoneId = ZoneId.systemDefault();
        Date date = Date.from(localDate.atStartOfDay().atZone(zoneId).toInstant());
        System.out.println(date);
    }

    public static void 转换系列_Date转LocalDate() {
        Date date = new Date();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDate localDate = date.toInstant().atZone(zoneId).toLocalDate();
        System.out.println(localDate);
    }

    public static void 格式化() {
        LocalDate now = LocalDate.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String nowTime = DateTimeFormatter.ISO_LOCAL_DATE.format(now);
        System.out.println(nowTime);
    }

}
